package com.xdcplus.web.service.bd;

import com.xdcplus.mp.service.BaseService;
import com.xdcplus.pager.vo.PageVO;
import com.xdcplus.web.common.pojo.dto.bd.BdPathiDTO;
import com.xdcplus.web.common.pojo.dto.bd.BdPathiFilterDTO;
import com.xdcplus.web.common.pojo.entity.bd.BdPathi;
import com.xdcplus.web.common.pojo.vo.bd.BdPathiVO;
import com.xdcplus.web.common.pojo.vo.bd.GetBdPathiVoAndFirstBdPathByPathiIdFkVo;

import java.util.List;


/**
 * 工艺路线表(BdPathi)表服务接口层
 *
 * @author Fish.Fei
 * @since 2023-02-03 16:00:51
 */
public interface BdPathiService extends BaseService<BdPathi, BdPathi, BdPathiVO> {

    /**
     * 添加工艺路线表(BdPathi)
     *
     * @param bdPathiDTO 工艺路线表(BdPathiDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveBdPathi(BdPathiDTO bdPathiDTO);

    /**
     * 修改工艺路线表(BdPathi)
     *
     * @param bdPathiDTO 工艺路线表(BdPathiDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean updateBdPathi(BdPathiDTO bdPathiDTO);

    /**
     * 批量保存或更新工艺路线表(BdPathi)
     *
     * @param bdPathiList 工艺路线表(BdPathiList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatch(List<BdPathi> bdPathiList);

    /**
     * 批量保存或更新工艺路线表(BdPathiDTOList)
     *
     * @param bdPathiDTOList 工艺路线表(BdPathiDTOList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatchByDTOList(List<BdPathiDTO> bdPathiDTOList);

    /**
     * 删除工艺路线表(BdPathi)
     *
     * @param id 工艺路线表(BdPathi)主键
     * @return {@link Boolean} 是否成功
     */
    Boolean deleteBdPathiLogical(Long id);
    
    Boolean deleteBdPathiByIds(String ids);

    /**
     * 查询工艺路线表(BdPathi)
     *
     * @param bdPathiFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<BdPathiVO>} 状态信息
     */
    List<BdPathiVO> queryBdPathiVOList(BdPathiFilterDTO bdPathiFilterDTO);

    /**
     * 查询工艺路线表(BdPathi)
     *
     * @param bdPathiFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<BdPathiVO>} 状态信息
     */
    PageVO<BdPathiVO> queryBdPathi(BdPathiFilterDTO bdPathiFilterDTO);

    /**
     * 查询一个
     *
     * @param id 工艺路线表(BdPathi)主键
     * @return {@link BdPathiVO} 工艺路线表(BdPathi)信息
     */
    BdPathiVO queryBdPathiById(Long id);

    /**
     * 根据工艺路线ID获取工艺路线信息及起始工序信息
     * @param pathiIdFk
     * @return
     */
    GetBdPathiVoAndFirstBdPathByPathiIdFkVo getBdPathiVoAndFirstBdPathByPathiIdFk(Long pathiIdFk);

}
